const express = require("express");
const router = express.Router();
const userDB = require("../../db/user")
const visitorDB = require("../../db/visitor")
// 添加访客
async function addVisitor(req) {
    try{
        let userID = req.session.userInfo._id;
        // 先看当前用户是否存储
        let doc = await visitorDB.findOne({visitor:userID});
        if(doc) {
            await visitorDB.findOneAndUpdate({visitor:userID},{date:Date.now()})
        }else {
            await visitorDB.create({
                visitor:userID
            })
        }
    }catch (e) {

    }

}
//登录
router.post("/",async (req,res)=>{
    let {user,pass} = req.body;
    // 检测数据格式
    if (!/^[\w\u4e00-\u9fa5\u0800-\u4e00\uac00-\ud7ff]{2,12}$/.test(user) ||
        !/^[\w\[\]\/\\~`|<>,.?;':"{}!@#$%^&*()_+=-]+$/.test(pass))
    {
        res.send({
            code:1,
            msg:'数据格式错误'
        })
        return
    }
    // // 验证用户名
    let doc = await userDB.findOne({user});
    if (!doc) {
        return res.send({
            code:3,
            msg:'用户不存在'
        })
    }
    // // 验证密码
    if(doc.pass !== pass) {
        return res.send({
            code:5,
            msg:'密码错误'
        })
    }
    // // 登录成功
    let userInfo = {
        user: doc.user,
        _id: doc._id,
        photo: doc.photo,
        admin:doc.admin
    }
    req.session.userInfo = doc;
    // 更新visitor
    addVisitor(req)
    res.send ({
        code:0,
        msg:'登录成功',
        data:userInfo
    })
})
// 检测是否登录
router.post("/check",(req,res)=>{
    let data = req.session.userInfo;
    if (data) {
        // 更新visitor
        addVisitor(req)
        // 登录过的
        res.send({
            code:0,
            msg:'已登录',
            data
        })
    } else {
        // 未登录
        res.send({
            code:1,
            msg:'未登录',
            data: { }
        })
    }
})

// 退出登录
router.post("/out",  (req,res)=>{
    req.session.destroy();
    res.send({
        code:0,
        msg:'退出成功'
    })

})



module.exports =router;